/*
 * CCVisu is a tool for visual graph clustering
 * and general force-directed graph layout.
 * This file is part of CCVisu.
 *
 * Copyright (C) 2005-2011  Dirk Beyer
 *
 * CCVisu is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * CCVisu is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with CCVisu; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Please find the GNU Lesser General Public License in file
 * license_lgpl.txt or http://www.gnu.org/licenses/lgpl.txt
 *
 * Dirk Beyer    (firstname.lastname@uni-passau.de)
 * University of Passau, Bavaria, Germany
 */
package org.sosy_lab.ccvisu;

import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.google.common.base.Charsets;
import com.google.common.io.Resources;

public class InformationProvider {

  // The content of this String is read from a file that is created by the
  // ant task "init".
  // To change the version, update the property in build.xml.
  private static final String  version;
  static {
    String versionBuilder = "(unknown version)";
    try {
      URL url = CCVisu.class.getClassLoader().getResource("org/sosy_lab/ccvisu/VERSION.txt");
      if (url != null) {
        String content = Resources.toString(url, Charsets.US_ASCII).trim();
        if (content.matches("[a-zA-Z0-9 ._+:-]+")) {
          versionBuilder = content;
        }
      }
    } catch (IOException e) {
      // Ignore exception, no better idea what to do here.
    }
    version = versionBuilder;
  }

  public static String versionMessage() {
    final String endl = CCVisuController.endl;
    StringBuilder versionText = new StringBuilder();

    versionText.append("CCVisu " + version + "." + endl);
    versionText.append("Copyright (C) 2005-2011 Dirk Beyer (University of Passau, Germany)." + endl);
    versionText.append("CCVisu is free software, released under the GNU LGPL." + endl);
    versionText.append("http://ccvisu.sosy-lab.org" + endl);

    return versionText.toString();
  }

  /**
   * Returns a brief tool description.
   */
  public static String toolDescription() {
    return "CCVisu, a tool for visual graph clustering and "
    + "general force-directed graph layout.";
  }

  /**
   * Returns data and time in ISO format.
   */
  public static String currentDateTime() {
    return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date());
  }
}